package impl;


import org.springframework.aop.framework.AopContext;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 * Created by bgt on 2017/10/4.
 */
public class HelloServiceImpl implements HelloService {
    @Override
    public void getMsg() {
        /**
         * 需要开启此功能
         * <aop:aspectj-autoproxy proxy-target-class="true"expose-proxy="true"/>
         */

        System.out.println("i am msg");
    }

    /**
     * 需求  执行testA发生异常  不影响test的事务
     * 直接this.testA();的话异常就直接回滚了
     * 原因是因为动态代理的原因。
     */
    @Transactional
    public void test(){
        //解决
        HelloServiceImpl helloService = (HelloServiceImpl) AopContext.currentProxy();
        helloService.testA();//testA错误不影响test的执行。
//        this.testA();

    }
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void testA(){

        System.out.println("插入成功");
        int i=1/0;
    }
}
